namespace LiJ.Pay.WeiXin.Pay.Mos
{
	/// <summary>
	///   统一下单请求实体
	/// </summary>
	public class WxAddPayUniOrderReq : WxAddPayOrderBaseReq
	{
		/// <summary>   
		///    交易起始时间 可空 String(14) 订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则===
		/// </summary>  
		public string time_start
		{
			get;
			set;
		}

		/// <summary>   
		///    交易结束时间 可空 String(14) 订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则 注意：最短失效时间间隔必须大于5分钟===
		/// </summary>  
		public string time_expire
		{
			get;
			set;
		}

		/// <summary>   
		///  交易类型 必填 String(16) 取值如下：JSAPI，NATIVE，APP, MWEB
		///    H5支付的交易类型为 MWEB
		///    小程序取值如：JSAPI
		/// </summary>  
		public string trade_type
		{
			get;
			set;
		}

		/// <summary>   
		///    商品ID 可空 String(32) trade_type=NATIVE时（即扫码支付），此参数必传。
		///    此参数为二维码中包含的商品ID，商户自行定义。
		/// </summary>  
		public string product_id
		{
			get;
			set;
		}

		/// <summary>   
		///    用户标识 可空 String(128) trade_type=JSAPI时（即公众号支付），此参数必传，此参数为微信用户在商户对应appid下的唯一标识。openid如何获取，可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid，再调用【企业号userid转openid接口】进行转换
		/// </summary>
		public string openid
		{
			get;
			set;
		}

		/// <summary>
		///  回调通知地址,公号等用到
		/// </summary>
		public string notify_url
		{
			get;
			set;
		}

		/// <summary>
		/// <para>H5场景值 【必填】</para>
		/// <para>   WAP站点:{"h5_info": {"type":"Wap","wap_url": "https://m.jd.com","wap_name": "京东官网"}}</para>
		/// <para>   IOS 或 Android(不建议H5，优先app支付): {"h5_info": {"type":"IOS/Android","app_name": "王者荣耀","bundle_id": "com.tencent.wzryIOS"}}</para>
		/// <para>公众号和扫码支付 场景值 【选填】</para>
		/// <para>    {"store_info":{"id": "门店ID","name": "名称","area_code": "编码","address": "地址" }} </para>
		/// <para>App 场景值 【选填】</para>
		/// <para>    { "store_id": "门店唯一标识 选填", "store_name":"门店名称 选填”}</para>
		/// </summary>
		public string scene_info
		{
			get;
			set;
		}

		/// <inheritdoc />
		protected override void SetSignDics()
		{
			base.SetSignDics();
			base.SetDicItem("time_start", this.time_start);
			base.SetDicItem("time_expire", this.time_expire);
			base.SetDicItem("trade_type", this.trade_type);
			base.SetDicItem("product_id", this.product_id);
			base.SetDicItem("openid", this.openid);
			base.SetDicItem("notify_url", this.notify_url);
			base.SetDicItem("scene_info", this.scene_info);
		}
	}
}
